﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ASPLanchonete.controller;
using ASPLanchonete.classes;
using ASPLanchonete.Funcoes;

namespace ASPLanchonete.Telas
{
    public partial class AbrirFecharCaixaView : System.Web.UI.Page
    {
        IAbrirFecharCaixaController abrirFecharCaixaController;
        AbrirFecharCaixa abrirFecharCaixa = new AbrirFecharCaixa();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session != null)
            {
                if (Session["IdUsuario"] == null || Session["IdUsuario"].Equals(0))
                {
                    Response.Redirect("~/Telas/LoginView.aspx");
                }
                else if (Session["TipoUsuario"] == null || !ControleAcessoTela.ConfirmaAcessoTela("AbrirFecharCaixaView", Session["TipoUsuario"]))
                    Response.Redirect("~/Default.aspx");
            }
            else
                Response.Redirect("~/Telas/LoginView.aspx");

            if (!IsPostBack)
            {
                abrirFecharCaixaController = new AbrirFecharCaixaController();
                abrirFecharCaixa = abrirFecharCaixaController.RetornaCaixaAberto();
                if (abrirFecharCaixa != null && abrirFecharCaixa.Id != 0)
                {
                    txtCodigo.Text = abrirFecharCaixa.Id.ToString();
                    txtValorDeixadoEmCaixa.Text = abrirFecharCaixa.DinheiroParaDiaSeguinte.ToString();
                    txtValorAcrescentar.Text = abrirFecharCaixa.DinheiroAcrescentar.ToString();
                    txtQtdeItensVendidos.Text = abrirFecharCaixa.QtdeVendas.ToString();
                    txtValorItensVendidos.Text = abrirFecharCaixa.ValorTotalVendas.ToString();
                    txtQtdeItensComprados.Text = abrirFecharCaixa.QtdeCompras.ToString();
                    txtValorItensComprados.Text = abrirFecharCaixa.ValorTotalCompras.ToString();
                    txtValorEmCaixa.Text = abrirFecharCaixa.DinheiroCaixaFechamento.ToString();
                    btnSalvar.Text = "Fechar Caixa";
                    btnSalvar.CommandArgument = "Fechar";
                    txtValorAcrescentar.Enabled = false;
                    txtValorADeixar.Enabled = true;
                    btnSalvar.Enabled = true;
                }
                else
                {
                    txtCodigo.Text = "0";
                    txtQtdeItensVendidos.Text = "0";
                    txtValorItensVendidos.Text = "0,00";
                    txtQtdeItensComprados.Text = "0";
                    txtValorItensComprados.Text = "0,00";
                    abrirFecharCaixa = abrirFecharCaixaController.RetornaCaixaAnterior();
                    if (abrirFecharCaixa != null && abrirFecharCaixa.Id != 0)
                    {
                        txtValorDeixadoEmCaixa.Text = abrirFecharCaixa.DinheiroParaDiaSeguinte.ToString();
                        txtValorEmCaixa.Text = abrirFecharCaixa.DinheiroParaDiaSeguinte.ToString();
                    }
                    else
                    {
                        txtValorDeixadoEmCaixa.Text = "0,00";
                        txtValorEmCaixa.Text = "0,00";
                    }
                    btnSalvar.Text = "Abrir Caixa";
                    btnSalvar.CommandArgument = "Abrir";
                    txtValorAcrescentar.Enabled = true;
                    txtValorADeixar.Enabled = false;
                    btnSalvar.Enabled = true;
                }
            }
        }

        protected void ExibeMensagem(string msg)
        {
            txtResultado.Text = msg;
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            Button botaoSalva = (Button)sender;
            if (botaoSalva.CommandArgument.Equals("Abrir"))
            {
                string msg = "";
                try
                {
                    abrirFecharCaixa = new AbrirFecharCaixa();
                    double dinheiroAcrescentar = new double();
                    Double.TryParse(txtValorAcrescentar.Text, out dinheiroAcrescentar);
                    abrirFecharCaixa.DinheiroAcrescentar = dinheiroAcrescentar;
                    abrirFecharCaixa.DinheiroCaixaAbertura = abrirFecharCaixa.DinheiroAcrescentar + Convert.ToDouble(txtValorDeixadoEmCaixa.Text);
                    abrirFecharCaixa.DataAbertura = DateTime.Now;
                    abrirFecharCaixa.IdUsuarioAbertura = Convert.ToInt32(Session["IdUsuario"].ToString());
                    abrirFecharCaixa.IdUsuarioFechamento = Convert.ToInt32(Session["IdUsuario"].ToString());
                    abrirFecharCaixa.Finalizado = false;
                    abrirFecharCaixaController = new AbrirFecharCaixaController();
                    msg = abrirFecharCaixaController.Salvar(abrirFecharCaixa);
                    txtCodigo.Text = abrirFecharCaixa.Id.ToString();
                    btnSalvar.Enabled = false;
                }
                catch (Exception ex)
                {
                    msg = "Erro: " + ex.Message.ToString();
                }
                finally
                {
                    ExibeMensagem(msg);
                }

            }
            else if (botaoSalva.CommandArgument.Equals("Fechar"))
            {
                string msg = "";
                try
                {
                    abrirFecharCaixaController = new AbrirFecharCaixaController();
                    abrirFecharCaixa = abrirFecharCaixaController.RetornaCaixaAberto();
                    abrirFecharCaixa.DinheiroParaDiaSeguinte = Convert.ToDouble(txtValorADeixar.Text);
                    abrirFecharCaixa.DataFechamento = DateTime.Now;
                    abrirFecharCaixa.IdUsuarioFechamento = Convert.ToInt32(Session["IdUsuario"].ToString());
                    abrirFecharCaixa.Finalizado = true;
                    msg = abrirFecharCaixaController.Salvar(abrirFecharCaixa);
                    msg = abrirFecharCaixaController.FechaComprasVendas();
                    btnSalvar.Enabled = false;
                }
                catch (Exception ex)
                {
                    msg = "Erro: " + ex.Message.ToString();
                }
                finally
                {
                    ExibeMensagem(msg);
                }
            }
        }

        protected void btnLimpar_Click(object sender, EventArgs e)
        {
            if (txtCodigo.Text.Equals("0"))
            {
                txtValorAcrescentar.Text = "0,00";
            }

            txtValorADeixar.Text = "0,00";
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Default.aspx");
        }

        protected void txtValorADeixar_TextChanged(object sender, EventArgs e)
        {
            double dinheiroDeixar = new double();
            Double.TryParse(txtValorADeixar.Text, out dinheiroDeixar);
            double ValorCaixa = Convert.ToDouble(txtValorEmCaixa.Text);
            double ValorRetirar = ValorCaixa - dinheiroDeixar;
            if (dinheiroDeixar == 0)
                txtValorADeixar.Text = "0,00";
            else if (ValorRetirar < 0)
            {
                txtValorADeixar.Text = "0,00";
                txtValorARetirar.Text = "0,00";
            }
            else
                txtValorARetirar.Text = ValorRetirar.ToString();
        }
    }
}